# 1 关于scheme
scheme是一门通用的计算机编程语言。是一个高阶语言,支持像结构化的数据,像string、list、symbol、vectors、字符等等。
Scheme是一种函数式编程语言,是Lisp的两种主要方言之一(另一种为Common Lisp)。不同于Common Lisp,Scheme遵循极简主义哲学,以一个小型语言核心作为标准,加上各种强力语言工具(语法糖)来扩展语言本身[1]。
麻省理工学院与其他院校曾采用Scheme教授计算机科学入门课程。著名的入门教材《计算机程序的构造和解释》(SICP)利用Scheme来解释程序设计[2]。Scheme的广泛受众被视为一个主要优势,然而不同实现之间的差异成为了它的一个劣势[3]。
Scheme最早由麻省理工学院的盖伊·史提尔二世与杰拉德·杰伊·萨斯曼在1970年代发展出来,并由两人发表的“λ论文集”推广开来。 Scheme语言与λ演算关系十分密切。小写字母“λ”是Scheme语言的标志。
Scheme的哲学是:设计计算机语言不应该进行功能的堆砌,而应该尽可能减少弱点和限制,使剩下的功能显得必要[4]。Scheme是第一个使用静态作用域的Lisp方言,也是第一个引入“干净宏”和第一类续延的编程语言。
# 2 实际应用
# 计算机科学教育
很多著名的计算机科学院校都利用Scheme来教授入门级课程。以下为一些最为著名的教授Scheme的学校:
麻省理工学院是Scheme与SICP的诞生地。直到2008年为止,麻省理工学院的入门课程6.001即是用Scheme来教授的。尽管现在Scheme已经不再被用于入门课程,麻省理工学院到目前为止还在教授SICP。
伯克利加州大学的入门课程61A到2010年为止利用Scheme与SICP教授入门课程,并利用Scheme来实现Logo,另一个基于Lisp的编程语言。自2011年起,61A改用Python来教授SICP[19]。
西北大学的入门课程CS2500利用Scheme来教授另一本著名的教材《程序设计方法》。 印第安那大学的入门课程C211利用Scheme来教授。
耶鲁大学
莱斯大学
北京大学
ProgramByDesign项目在美国超过600所高中教授Scheme语言。
滑铁卢大学数学系(包括 Computer Science)的入门课程CS115, CS116, CS135利用Scheme来教授。
云林科技大学
# 开源软件
ChezScheme (opens new window)是一款高效的开源Scheme软件。
scheme-lib (opens new window) 是scheme的一个开源库,支持各种库,它提供的cffi调用,可以减少开发量,与大量的软件自由交互。官方主页:http://scheme-lib.evilbinary.org/ (opens new window) QQ群:Lisp兴趣小组239401374
自由软件视频处理程序GIMP利用Scheme为脚本语言。
GNU的标准脚本语言Guile是基于Scheme的,并被用于GNOME等软件中。
1 基本概念 →